package com.tinysand.advert.repository;

import com.tinysand.advert.entity.AdvertPlan;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

/**
 * 推广计划相关记录查询接口定义
 *
 * Created By TINY
 * Create Time 2020/2/15
 **/
public interface PlanRepository
        extends JpaRepository<AdvertPlan, Long> {

    /**
     * 根据推广计划id与用户userId查询一个推广计划记录
     *
     * @param id 推广计划id
     * @param userId 用户id
     * @return 推广计划记录
     */
    AdvertPlan findByIdAndUserId(Long id, Long userId);

    /**
     * 根据提供的多个推广计划与用户id查询出所有的符合条件的推广计划
     *
     * @param ids 多个推广计划id
     * @param userId 用户id
     * @return 推广计划集合
     */
    List<AdvertPlan> findAllByIdInAndUserId(List<Long> ids, Long userId);

    /**
     * 根据用户id与推广计划名称查找对应的推广计划
     *
     * @param userId 用户id
     * @param name 推广计划名称
     * @return 推广计划
     */
    AdvertPlan findByUserIdAndName(Long userId, String name);

    /**
     * 根据推广计划状态查找所有的推广计划
     *
     * @param status 推广计划状态
     * @return 所有符合条件的推广计划
     */
    List<AdvertPlan> findAllByPlanStatus(Integer status);
}
